/**
 * 
 */
package com.dxh.vt.service.impl;

import org.apache.commons.lang3.StringUtils;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;

import com.dxh.vt.dao.BaseDao;
import com.dxh.vt.service.BaseService;

/**
 * 说明:
 * 2016年3月4日
 * 作者 wl
 */
public class BaseServiceImpl<T> implements BaseService<T>{

	/**
	 * 这里basedao 需要注入子类
	 */
	private BaseDao<T> basedao;
	
	public void setBasedao(BaseDao<T> basedao) {
		this.basedao = basedao;
	}

	/**
	 * 新增或者更新bean
	 */
	public T saveOrUpdate(T t) {
		return basedao.save(t);
	}

	/**
	 * 根据id删除bean
	 */
	public boolean deleteById(String id) {
		boolean blea = false;
		basedao.delete(id);
		if(!basedao.exists(id)){
			blea = true;
		}
		return blea;
	}

	/**
	 * 根据id获取bean
	 */
	public T findById(String id) {
		if(StringUtils.isBlank(id)){
			throw new RuntimeException("传入的实体id不能为空");
		}
		return basedao.findOne(id);
	}
	

	/**
	 * 
	 * 作者: wl
	 * 创建时间:2015年7月13日
	 * 说明：分页获取数据
	 */
	public Page<T> findWithPage(Integer pageIndex, Integer pageSize) {
		
		if(pageIndex == null || pageIndex < 0){
			pageIndex = 0;
		}
		
		if(pageSize == null || pageSize < 0){
			pageSize = 10;
		}
		Pageable page = new PageRequest(pageIndex, pageSize,new Sort(Direction.DESC,"ts"));
		return basedao.findAll(page);
	}

}
